﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>方法内容编辑</title>
    <link rel="stylesheet" href="../../Scripts/codemirror/doc/docs.css" />
    <link rel="stylesheet" href="../../Scripts/codemirror/lib/codemirror.css" />
    <link rel="stylesheet" href="../../Scripts/codemirror/theme/eclipse.css" />
    <link rel="stylesheet" href="../../Scripts/codemirror/theme/elegant.css" />
    <link rel="stylesheet" href="../../Scripts/codemirror/theme/erlang-dark.css" />
    <link rel="stylesheet" href="../../Scripts/codemirror/theme/idea.css" />
    <script src="../../Scripts/codemirror/lib/codemirror.js"></script>
    <script src="../../Scripts/codemirror/mode/javascript/javascript.js" type="text/javascript"></script>
    <script src="../../Scripts/codemirror/addon/selection/active-line.js" type="text/javascript"></script>
    <script src="../../Scripts/codemirror/addon/edit/matchbrackets.js" type="text/javascript"></script>
    <link href="../../../DataUser/Style/ccbpm.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="../../Scripts/bootstrap/js/jquery.min.js"></script>
    <script src="../../Scripts/QueryString.js" type="text/javascript"></script>
    <script type="text/javascript" src="../../Scripts/config.js"></script>
    <script type="text/javascript" src="../../Comm/Gener.js"></script>
    <base target="_self" />
    <script type="text/javascript">

        function Esc() {
            if (event.keyCode == 27)
                window.close();
            return true;
        }

        window.addEventListener("keydown", function (e) {
            //可以判断是不是mac，如果是mac,ctrl变为花键
            //event.preventDefault() 方法阻止元素发生默认的行为。
            if (e.keyCode == 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
                e.preventDefault();
                Save();

                // Process event...
                //document.getElementById("test").innerHTML = "ctrl+s成功";
            }
        }, false);


        //页面启动函数.
        var en = null;
        var docsLast = null; //最后的code内容，用于判断是否发生了变化？
        var currFuncType = 0;
        $(function () {

            //$.base64.utf8encode = true;

            var myPK = GetQueryString("MyPK");
            en = new Entity("BP.Frm.MethodFunc", myPK);

            GenerBindEnumKey("DDL_WhatAreYouTodo", "WhatAreYouTodo", en.WhatAreYouTodo);

            //给控件赋值.
            GenerFullAllCtrlsVal(en);

            currFuncType = en.MethodDocTypeOfFunc;

            //设置内容.
            FullDoc();

            //生成参数内容.
            var attrs = new Entities("BP.Sys.MapAttrs", "FK_MapData", myPK);
            var html = "<font color=yellow ><b>//自定义方法名:" + en.MethodName + ",共有:" + attrs.length + "参数;&nbsp;";

            for (var i = 0; i < attrs.length; i++) {
                var attr = attrs[i];
                html += "" + attr.Name + "," + attr.KeyOfEn + ";&nbsp;";
            }

            html += "</b></font>";

            html += "<br><font color=yellow ><b> function </b></font> <font color=red ><b>" + en.MethodID + "</b></font> <font color=yellow ><b>(</b></font>";
            for (var i = 0; i < attrs.length; i++) {
                var attr = attrs[i];
                if (i == attrs.length - 1)
                    html += "<font color=PINK ><b>&nbsp;" + attr.KeyOfEn + "</b></font>";
                else
                    html += "<font color=PINK ><b>&nbsp;" + attr.KeyOfEn + "</b></font><font color=yellow ><b>,</b></font>";
            }

            html += "<font color=yellow ><b>)</b></font>&nbsp;<font color=yellow font-size='12px'><b>{</b></font>";
            $("#paras").html(html);


            //输出实体的其他信息，方便用户更改.
            var attrs = new Entities("BP.Sys.MapAttrs", "FK_MapData", en.FrmID);

            var mapData = new Entity("BP.Sys.MapData", en.FrmID);

            html = "<table style='width:100%;'>";
            html += "<caption>表单:" + mapData.Name + ",表单ID:" + mapData.No + ",表:" + mapData.PTable + "</caption>";
            html += "<tr>";
            html += "<th>#</th>";
            html += "<th>字段</th>";
            html += "<th>字段名</th>";
            html += "<th>类型</th>";
            html += "</tr>";

            for (var i = 0; i < attrs.length; i++) {
                var attr = attrs[i];
                html += "<tr>";
                html += "<td>" + (i + 1) + "</td>";
                html += "<td>" + attr.KeyOfEn + "</td>";
                html += "<td>" + attr.Name + "</td>";
                html += "<td>" + attr.MyDataType + "</td>";
                html += "</tr>";
            }
            html += "</table>";

            html += "UPDATE " + mapData.PTable + " SET xxx=xx,XXX=11 WHERE OID=@OID";

            $("#FrmDocs").html(html);

        });

        function FullDoc() {

            var funcType = $('input[name="RB_MethodDocTypeOfFunc"]:checked').val();
            en.MethodDocTypeOfFunc = funcType;

            var txt = editor.getValue();
            if (docsLast != null && docsLast != txt) {
                // if (window.confirm('您需要保存吗？') == true) {

                //返回上一次的设置.
                document.getElementById("RB_MethodDocTypeOfFunc_" + currFuncType).checked = true;
                Save(); //执行保存.
                document.getElementById("RB_MethodDocTypeOfFunc_" + funcType).checked = true;
                //}
            }

            //设置当前的状态.
            currFuncType = funcType;

            //根据选择获取变化内容.
            var handler = new HttpHandler("BP.Frm.WF_CCBill_Admin");
            handler.AddPara("TypeOfFunc", funcType);
            handler.AddPara("MyPK", en.MyPK);
            var data = handler.DoMethodReturnString("MethodDoc_GetScript");

            editor.setValue(data);
            docsLast = data; //记录最后的值，用于判断是否更改.
        }

        function DemoSQL() {
            var url = "MethodDocDemoSQL.htm?MyPK=" + GetQueryString("MyPK");
            WinOpen(url);
        }
        function DemoJS() {
            var url = "MethodDocDemoJS.htm?MyPK=" + GetQueryString("MyPK");
            WinOpen(url);
        }

        function Save() {

            //执行选择类型的保存.
            var selectFuncType = $('input[name="RB_MethodDocTypeOfFunc"]:checked').val();

            var handler = new HttpHandler("BP.Frm.WF_CCBill_Admin");
            handler.AddUrlData();
            var doc = editor.getValue();
            doc = doc.replace(/-/g, "/$");
            doc = doc.replace(/[+]/g, "/#");

            // alert(doc);

            handler.AddPara("doc", doc); //不知道是否可以存储.
            handler.AddPara("TypeOfFunc", selectFuncType);

            var data = handler.DoMethodReturnString("MethodDoc_SaveScript");

            docsLast = editor.getValue(); //记录最后的值，用于判断是否更改.
            alert(data);
        }
        function ToMethodParas() {
            window.location.href = "MethodParas.htm?MyPK=" + GetQueryString("MyPK");
        }
    </script>
</head>
<body onkeypress="Esc();" style="font-size: smaller">
    <form id="cc">
        <table id="Table1" style="width: 100%">
            <caption>
                定义方法执行内容 - <a href="javascript:ToMethodParas()">定义执行方法的参数</a>
            </caption>
            <tr>
                <td>
                    方法类型:
                    <label>
                        <input type="radio" value="0" name="RB_MethodDocTypeOfFunc" id="RB_MethodDocTypeOfFunc_0"
                               onclick="FullDoc();" />SQL
                    </label>
                    <label>
                        <input type="radio" value="1" name="RB_MethodDocTypeOfFunc" id="RB_MethodDocTypeOfFunc_1"
                               onclick="FullDoc();" />javascript
                    </label>
                    <label>
                        <input type="radio" value="2" name="RB_MethodDocTypeOfFunc" id="RB_MethodDocTypeOfFunc_2"
                               onclick="FullDoc();" />URL模式
                    </label>

                    执行完毕后干啥？
                    <select id="DDL_WhatAreYouTodo" name="DDL_WhatAreYouTodo"> </select>

                    <input type="button" value="保存" onclick="Save()" id="Btn_Save" name="Btn_Save" />
                    <input type="button" value="内容编辑demo for javascript" onclick="DemoJS()" id="Button1"
                           name="Btn_D1" />
                    <input type="button" value="内容编辑demo for SQL" onclick="DemoSQL()" id="Button2" name="Btn_D2" />
                    更换主题：
                    <select onchange="selectTheme()" id="select">
                        <option>eclipse</option>
                        <option>elegant</option>
                        <option selected="selected">erlang-dark</option>
                        <option>idea</option>
                    </select>
                    </th>
                </td>
            </tr>
            <tr>
                <td style="background-color: Background">
                    <div id="paras">
                    </div>
                </td>
            </tr>
            <tr>
                <td style="margin: 0px;">
                    <textarea id="tb_doc" style="width: 100%; height: 100%;" rows="100"> </textarea>
                </td>
            </tr>
            <tr style="background-color: Background">
                <td style="margin: 0px;">
                    <font color="yellow" font-size='12px'><b>}</b></font> <font color="yellow">
                        <b>
                            //您需要把方法写入编辑器里.
                            你可以使用jQuery，使用Gener.js里面的实体类，进行数据的增删改查.
                        </b>
                    </font>
                </td>
            </tr>
        </table>
        <script type="text/javascript">

            var editor = CodeMirror.fromTextArea(document.getElementById("tb_doc"), {
                lineNumbers: true,
                styleActiveLine: true,
                matchBrackets: true,
                theme: "erlang-dark"
            });


            var input = document.getElementById("select");
            function selectTheme() {
                var theme = input.options[input.selectedIndex].textContent;
                editor.setOption("theme", theme);
                location.hash = "#" + theme;
            }

            /*
            var choice = (location.hash && location.hash.slice(1)) ||
            (document.location.search &&
            decodeURIComponent(document.location.search.slice(1)));
            if (choice) {
            input.value = choice;
            editor.setOption("theme", choice);
            }
            CodeMirror.on(window, "hashchange", function() {
            var theme = location.hash.slice(1);
            if (theme) { input.value = theme; selectTheme(); }
            });*/
        </script>
    </form>
    <a href="javascript:ShowHidden('h_title')">
        <img src='../../Img/Help.png' />实体的其他信息.
    </a>
    <div id="h_title" style="color: Gray; display: none">
        <div id="FrmDocs">
        </div>
    </div>
</body>
</html>
